int redLed = 2;    // 红色LED接2号口
int greenLed = 3;  // 绿色LED接3号口
int redKey = 4;    // 红色led控制开关接4号口
int greenKey = 5;  // 绿色led控制开关接5号口
int resetKey = 6;  // 复位开关接6号口

void setup() {
  Serial.begin(9600);
  pinMode(redLed, OUTPUT);    // 红色led接口设置输出模式
  pinMode(greenLed, OUTPUT);  // 绿色led接口设置输出模式

  pinMode(redKey, INPUT_PULLUP);    // 红色控制按键设置为输入模式，PULLUP表示默认输入的是高电平
  pinMode(greenKey, INPUT_PULLUP);  // 绿色控制按键设置为输入模式，PULLUP表示默认输入的是高电平
  pinMode(resetKey, INPUT_PULLUP);  // 复位控制按键设置为输入模式，PULLUP表示默认输入的是高电平
}

void loop() {
  if (digitalRead(redKey) == LOW)  // 判断控制红色LED的按键是否按下，按下小灯亮起
    Red();
  if (digitalRead(greenKey) == LOW)  // 判断控制绿色LED的按键是否按下，按下小灯亮起
    Green();
}

void Red() {
  while (digitalRead(resetKey) == HIGH)  // 判断reset按键释放按下，如果按下将跳出当前的循环，进行clear()函数
  {
    digitalWrite(redLed, HIGH);   // 红色LED亮起
    digitalWrite(greenLed, LOW);  // 绿色LED熄灭
  }
  clear();  // 熄灭所有小灯
}

void Green() {
  while (digitalRead(resetKey) == HIGH)  // 判断reset按键释放按下，如果按下将跳出当前的循环，进行clear()函数
  {
    digitalWrite(redLed, LOW);     // 红色LED熄灭
    digitalWrite(greenLed, HIGH);  // 绿色LED亮起
  }
  clear();  // 熄灭所有小灯
}

void clear() {
  digitalWrite(redLed, LOW);    // 红色LED熄灭
  digitalWrite(greenLed, LOW);  // 绿色LED熄灭
}